package io.github.cisumer.mybatis.extra.util;

import java.lang.reflect.Method;
import java.util.stream.Stream;

import org.apache.ibatis.annotations.ResultMap;

import io.github.cisumer.mybatis.extra.ExtraMybatisPlusConfiguration;
import io.github.cisumer.mybatis.extra.build.ResultMapParser;
/**
 * ResultMap tools
 * @author github.com/cisumer
 *
 */
public abstract class ResultMapUtils {
	
	/**
	 * mybatis-plus.result-map.enabled == true
	 * @return
	 */
	public static boolean enabled(){
		return ExtraMybatisPlusConfiguration.isResultMapEnabled();
	}
	/**
	 * 过滤一下Mapper方法上的ResultMap，如果没有开启自定义ResultMap返回不包含自定义ID的resultmapId。
	 * @param m
	 * @return
	 */
	public static String resultMapFilter(Method m){
		ResultMap resultMap=m.getAnnotation(ResultMap.class);
		if(resultMap==null)return null;
		if(enabled()){
			return String.join(",", resultMap.value());
		}else{
			String result=Stream.of(resultMap.value()).filter(rm->!rm.startsWith(ResultMapParser.RESULTMAP_NAMESPACE))
				.reduce((x,y)->x+","+y).orElse(null);
			return result;
		}
	}
}
